/* 内存数据状态 */

let lifeData = {};

try {
	// 尝试获取本地是否存在lifeData变量，第一次启动APP时是不存在的
	lifeData = uni.getStorageSync('lifeData');
} catch (e) {

}

// 需要永久存储，且下次APP启动需要取出的，在state中的变量名
let saveStateKeys = ['vuex_user'];

// 保存变量到本地存储中
const saveLifeData = function(key, value) {
	// 判断变量名是否在需要存储的数组中
	if (saveStateKeys.indexOf(key) != -1) {
		// 获取本地存储的lifeData对象，将变量添加到对象中
		let tmp = uni.getStorageSync('lifeData');
		// 第一次打开APP，不存在lifeData变量，故放一个{}空对象
		tmp = tmp ? tmp : {};
		tmp[key] = value;
		// 执行这一步后，所有需要存储的变量，都挂载在本地的lifeData对象中
		uni.setStorageSync('lifeData', tmp);
	}
}

export default {
	// 正在加载中
	isLoading: true,
	// 操作是否是刷新页面，刷新初始没有nim实例，会导致时序问题
	isRefresh: true,
	// 全屏显示的原图
	isFullscreenImgShow: false,
	fullscreenImgSrc: '',
	// 切页动画 forward，backward
	transitionName: 'forward',

	// IM相关
	// NIM SDK 实例
	nim: null,
	// 登录账户ID
	userUID: null,
	// 用户名片
	myInfo: {},
	// 好友/黑名单/陌生人名片, 数据结构如：{cid: {attr: ...}, ...}
	userInfos: {},
	// 用户订阅的事件同步, 数据结构如：{cid: {typeid: {...}, ...}, ...}
	userSubscribes: {},

	// 好友列表
	friendslist: [],
	// 机器人列表
	robotslist: [],
	// 用于判定帐号是否是robots
	robotInfos: {},
	robotInfosByNick: {},
	// 黑名单列表
	blacklist: [],
	// 禁言列表
	// mutelist: [],

	teamlist: [],
	// 群自身的属性，数据结构如：{tid: {attr: ...}, ...}
	// teamAttrs: {},
	// 群对象的成员列表，数据结构如：{tid: {members: [...], ...}, ...}
	teamMembers: {},
	// 关闭群提醒的群id列表
	muteTeamIds: [],
	// 群设置传递数据
	teamSettingConfig: {},

	// 已发送群消息回执Map,key为群Id
	sentReceipedMap: {},
	// 当前群消息回执查询的群id
	currReceiptQueryTeamId: null,
	// 群消息回执查询的消息列表
	receiptQueryList: [],
	// 群消息回执查询结果列表
	teamMsgReads: [],
	// 群消息已读未读账号列表
	teamMsgReadsDetail: {
		readAccounts: [],
		unreadAccounts: []
	},

	// 消息列表
	msgs: {}, // 以sessionId作为key
	msgsMap: {}, // 以idClient作为key，诸如消息撤回等的消息查找
	// 会话列表
	sessionlist: [],
	sessionMap: {},
	// 当前会话ID（即当前聊天列表，只有单聊群聊采用，可用于判别）
	currSessionId: null,
	currSessionMsgs: [],
	// 是否有更多历史消息，用于上拉加载更多
	noMoreHistoryMsgs: false,
	// 继续对话的机器人id
	continueRobotAccid: '',
	//手機版本號
	appVersion:'',
	// 系统消息
	sysMsgs: [],
	customSysMsgs: [],
	sysMsgUnread: {
		total: 0
	},
	customSysMsgUnread: 0,

	// 临时变量
	// 缓存需要获取的用户信息账号,如searchUser
	searchedUsers: [],
	// 缓存需要获取的群组账号
	searchedTeams: [],

	// 聊天室相关
	// 聊天室sdk实例
	chatroomInsts: {},
	chatroomInfos: {},
	// 聊天室分房间消息集合
	chatroomMsgs: {},
	// 当前聊天室实例及id
	currChatroom: null,
	currChatroomId: null,
	currChatroomMsgs: [],
	currChatroomInfo: {},
	// 聊天室成员列表
	currChatroomMembers: [],

	// 如果上面从本地获取的lifeData对象下有对应的属性，就赋值给state中对应的变量
	// 加上vuex_前缀，是防止变量名冲突，也让人一目了然
	vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
	vuex_user_tim: {},

	fileUploadUrl: 'https://tapi.i-dock.net/mgr/tool/upload/image', //上传文件地址
	fileUploadParams: {}, //上传文件参数
	scrollValue: 0,
	jHeader: {
		'content-type': 'application/json', //表单提交请求头信息
	},

	isLogin: false,
	isSDKReady: false, // TIM SDK 是否 ready

	conversationActive: {}, //聊天进行中的会话
	toUserId: '', //聊天对象id
	currentMessageList: [],

	toGroupId: '', //聊天群聊ID

	notidyRedStatus: false, //通知红点状态

	voicecall: false, //语音通话状态
  afterPublishPid: 0,  //发布动态前保存当前项目pid
	$iconType: 'flower',
	publishTopic: 0,  //发布帖子后保存状态以便回到社区重新刷新数据
	$loadText: {
		loadmore: '轻轻上拉',
		loading: '努力加载中',
		nomore: '到底了哦'
	},
	//用于监听评论的数值修改
	$replyIdx:undefined,
	updateTimes: 1,
	tabBarMixin:'',
}
